package packVistas;

import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JTextField;
import javax.swing.JTable;

import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
import java.awt.Insets;

import javax.swing.table.DefaultTableModel;

import packLigaDeFutbol.GestorActuaciones;
import packLigaDeFutbol.GestorPartidos;
import packLigaDeFutbol.UtilControles;
import packLigaDeFutbol.comboValue;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

import javax.swing.JRadioButton;

import com.jgoodies.forms.layout.FormLayout;
import com.jgoodies.forms.layout.ColumnSpec;
import com.jgoodies.forms.layout.RowSpec;

import javax.swing.JScrollPane;

import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.ItemListener;
import java.awt.event.ItemEvent;

public class GestionTarjetas extends JDialog {
	
	private static final long serialVersionUID = 5886423851780869882L;
	private JTextField tMinuto;
	private JComboBox<comboValue> cmbPartido, cmbJugador;
	private JRadioButton rdbAmarilla, rdbRoja;
	private JTable tMinJug;
	private boolean cargando;
	private int idPartido;
	private int idArbitro;
	
	public GestionTarjetas(int pIdArbitro) {
		setModal(true);
		cargando = true;
		setModal(true);
		setTitle("Gestion de Tarjetas");
		setBounds(100, 100, 456, 357);
		getContentPane().setLayout(new FormLayout(new ColumnSpec[] {
				ColumnSpec.decode("417px"),},
			new RowSpec[] {
				RowSpec.decode("262px"),}));
		
		JPanel panel = new JPanel();
		getContentPane().add(panel, "1, 1, fill, fill");
		GridBagLayout gbl_panel = new GridBagLayout();
		gbl_panel.columnWidths = new int[]{208, 0, 131, 0};
		gbl_panel.rowHeights = new int[]{43, 43, 0, 43, 43, 43, 0};
		gbl_panel.columnWeights = new double[]{1.0, 0.0, 1.0, Double.MIN_VALUE};
		gbl_panel.rowWeights = new double[]{0.0, 0.0, 0.0, 0.0, 0.0, 1.0, Double.MIN_VALUE};
		panel.setLayout(gbl_panel);
		
		JLabel lblNewLabel_1 = new JLabel("Partido:");
		GridBagConstraints gbc_lblNewLabel_1 = new GridBagConstraints();
		gbc_lblNewLabel_1.fill = GridBagConstraints.BOTH;
		gbc_lblNewLabel_1.insets = new Insets(0, 0, 5, 5);
		gbc_lblNewLabel_1.gridx = 0;
		gbc_lblNewLabel_1.gridy = 0;
		panel.add(lblNewLabel_1, gbc_lblNewLabel_1);
		
		JButton btnNewButton = new JButton("Anotar Incidencia");
		btnNewButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				if(tMinuto.getText() != "" && testNum()) {
					int i = 0;
					if(rdbAmarilla.isSelected()){
						i = 2;
					}else {
						i = 3;
					}
					GestorActuaciones.get().crearActuacion(
							idPartido, 												//id del partido
							((comboValue)cmbJugador.getSelectedItem()).getValor(), 	//id del jugador
							i,														//idtipo (i sera 2 o 3 en funcion de los rdBtns)
							Integer.parseInt(tMinuto.getText())						//minuto
							);

					cmbJugador.setSelectedIndex(0);	//reiniciamos el combo a su posicion inicial
					tMinuto.setText("");			//eliminamos el texto del minuto
					cargarTabla();					//volvemos a cargar la tabla de las taarjetas
				}
			}	
		});
		
		cmbJugador = new JComboBox<comboValue>();
		
		GridBagConstraints gbc_btnNewButton = new GridBagConstraints();
		gbc_btnNewButton.fill = GridBagConstraints.VERTICAL;
		gbc_btnNewButton.insets = new Insets(0, 0, 5, 0);
		gbc_btnNewButton.gridx = 2;
		gbc_btnNewButton.gridy = 0;
		panel.add(btnNewButton, gbc_btnNewButton);
		
		cmbPartido = new JComboBox<comboValue>();
		cmbPartido.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				//Si esta cargando el combo no hacemos nada
				if (!cargando) {
					JComboBox<comboValue> cb = (JComboBox<comboValue>)arg0.getSource(); //obtenemos el combo
					idPartido = ((comboValue)cb.getSelectedItem()).getValor();			//obtenemos el id del partido seleccionado

					//Cargamos el combo de los jugadores
					//como parametros le pasamos el combo de los jugadores y el resultset de todos los jugadores de un partido
					UtilControles.cargarCombo(cmbJugador, GestorPartidos.get().obtenerJugadoresDePartido(idPartido));
					//Cargamos la tabla con la lista de tarjetas del partido
					cargarTabla();
				}
			}
		});
		GridBagConstraints gbc_cmbPartido = new GridBagConstraints();
		gbc_cmbPartido.fill = GridBagConstraints.HORIZONTAL;
		gbc_cmbPartido.insets = new Insets(0, 0, 5, 5);
		gbc_cmbPartido.gridx = 0;
		gbc_cmbPartido.gridy = 1;
		panel.add(cmbPartido, gbc_cmbPartido);
		
		JLabel lblColor = new JLabel("Color");
		GridBagConstraints gbc_lblColor = new GridBagConstraints();
		gbc_lblColor.insets = new Insets(0, 0, 5, 5);
		gbc_lblColor.gridx = 0;
		gbc_lblColor.gridy = 2;
		panel.add(lblColor, gbc_lblColor);
		
		rdbAmarilla = new JRadioButton("Amarilla");
		rdbAmarilla.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				rdbRoja.setSelected(false);
			}
		});
		rdbAmarilla.setSelected(true);
		GridBagConstraints gbc_rdbAmarilla = new GridBagConstraints();
		gbc_rdbAmarilla.insets = new Insets(0, 0, 5, 5);
		gbc_rdbAmarilla.gridx = 1;
		gbc_rdbAmarilla.gridy = 2;
		panel.add(rdbAmarilla, gbc_rdbAmarilla);
		
		rdbRoja = new JRadioButton("Roja");
		rdbRoja.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				rdbAmarilla.setSelected(false);
			}
		});
		GridBagConstraints gbc_rdbRoja = new GridBagConstraints();
		gbc_rdbRoja.insets = new Insets(0, 0, 5, 0);
		gbc_rdbRoja.gridx = 2;
		gbc_rdbRoja.gridy = 2;
		panel.add(rdbRoja, gbc_rdbRoja);
		
		JLabel lblNewLabel_2 = new JLabel("Jugador:");
		GridBagConstraints gbc_lblNewLabel_2 = new GridBagConstraints();
		gbc_lblNewLabel_2.fill = GridBagConstraints.BOTH;
		gbc_lblNewLabel_2.insets = new Insets(0, 0, 5, 5);
		gbc_lblNewLabel_2.gridx = 0;
		gbc_lblNewLabel_2.gridy = 3;
		panel.add(lblNewLabel_2, gbc_lblNewLabel_2);
		
		JLabel lblNewLabel = new JLabel("Minuto");
		GridBagConstraints gbc_lblNewLabel = new GridBagConstraints();
		gbc_lblNewLabel.fill = GridBagConstraints.BOTH;
		gbc_lblNewLabel.insets = new Insets(0, 0, 5, 5);
		gbc_lblNewLabel.gridx = 1;
		gbc_lblNewLabel.gridy = 3;
		panel.add(lblNewLabel, gbc_lblNewLabel);
		
		JButton btnNewButton_1 = new JButton("Borrar Incidencia");
		btnNewButton_1.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent arg0) {
				//comprobamos que haya alguna fila seleccionada
				if (tMinJug.getSelectedRow() != -1){
					
				//con esto sabemos el ID de la fila que tenemos seleccionada:
				//--tminjug.getSelectedRow nos devuelve la fila seleccionada
				//--el 0 es porque al hacer la select el ID de la actuacion es el primer campo
				int idActuacion = Integer.parseInt(tMinJug.getValueAt(tMinJug.getSelectedRow(), 0).toString());
				
				//eliminamos la actuacion seleccionada
				GestorActuaciones.get().eliminarActuacion(idActuacion);
				
				//cargamos la tabla para que no aparezca la acutacion que hemos eliminado
				cargarTabla();
				}
			}
		});
		GridBagConstraints gbc_btnNewButton_1 = new GridBagConstraints();
		gbc_btnNewButton_1.fill = GridBagConstraints.VERTICAL;
		gbc_btnNewButton_1.insets = new Insets(0, 0, 5, 0);
		gbc_btnNewButton_1.gridx = 2;
		gbc_btnNewButton_1.gridy = 3;
		panel.add(btnNewButton_1, gbc_btnNewButton_1);
		
		GridBagConstraints gbc_comboBox_1 = new GridBagConstraints();
		gbc_comboBox_1.fill = GridBagConstraints.HORIZONTAL;
		gbc_comboBox_1.insets = new Insets(0, 0, 5, 5);
		gbc_comboBox_1.gridx = 0;
		gbc_comboBox_1.gridy = 4;
		panel.add(cmbJugador, gbc_comboBox_1);
		
		tMinuto = new JTextField();
		GridBagConstraints gbc_textField = new GridBagConstraints();
		gbc_textField.fill = GridBagConstraints.BOTH;
		gbc_textField.insets = new Insets(0, 0, 5, 5);
		gbc_textField.gridx = 1;
		gbc_textField.gridy = 4;
		panel.add(tMinuto, gbc_textField);
		tMinuto.setColumns(10);
		
		JButton btnNewButton_3 = new JButton("Cerrar");
		btnNewButton_3.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				dispose();
			}
		});
		
		JScrollPane scrollPane = new JScrollPane();
		GridBagConstraints gbc_scrollPane = new GridBagConstraints();
		gbc_scrollPane.insets = new Insets(0, 0, 0, 5);
		gbc_scrollPane.fill = GridBagConstraints.BOTH;
		gbc_scrollPane.gridx = 0;
		gbc_scrollPane.gridy = 5;
		panel.add(scrollPane, gbc_scrollPane);
		
		tMinJug = new JTable();
		scrollPane.setViewportView(tMinJug);
		GridBagConstraints gbc_btnNewButton_3 = new GridBagConstraints();
		gbc_btnNewButton_3.gridx = 2;
		gbc_btnNewButton_3.gridy = 5;
		panel.add(btnNewButton_3, gbc_btnNewButton_3);
		
		// al inicio se carga �ste y al cargarse �ste, se cargan los dem�s en funci�n del partido seleccionado.
		UtilControles.cargarCombo(cmbPartido, GestorPartidos.get().obtenerPartidosDeArbitro(pIdArbitro));
		
		cargando = false;
	}
		private void cargarTabla() {
			//cargamos la tabla de los goles
			//como parametros le pasamos la tabla y el resultset con las tarjetas de un partido
			UtilControles.cargarTabla(tMinJug, GestorPartidos.get().mostrarTarjetasDePartido(idPartido));
		}

	
	    
	
	private boolean testNum() {
		boolean is = true;
		int min = 0;
		try {
			min = Integer.parseInt(tMinuto.getText());
		}catch (NumberFormatException e) {
			is = false;
		}
		return is;
	}

}
